// node 42_闭包.js

//题1
function foo(a,b) {
    console.log(b)
    return {
        foo:function (c) {
            return foo(c,a)//foo属于全局作用域调用
        }
    }
} 

// var x = {foo:{function(c) {return foo(c,a)}}}   a=0,b=undefined
var x = foo(0);//-->undefined
x.foo(1);//a=1,b=0   -->0
x.foo(2);//a=2,b=0   -->0
x.foo(3);//a=3,b=0   -->0

//var y = {foo:{function(c) {return foo(c,a)}}}   a=0,b=undefined -->undefined
//a=1,b=0 -->0
//a=2,b=1 -->1
//a=3,b=2 -->2
var y = foo(0).foo(1).foo(2).foo(3);

//var z = {foo:{function(c) {return foo(c,a)}}}   a=0,b=undefined   -->undefined
//var z = {foo:{function(c) {return foo(c,a)}}}   a=1,b=0 -->0
var z = foo(0).foo(1);
z.foo(2);//a=2,b=1    -->1
z.foo(3);//a=3,b=1    -->1

//题2
//使用闭包解决循环定时器输出问题
function operateTime() {
    var arr = ['100','200','300']
    for(var i =0;i<arr.length;i++){
        (function (i) {
            setTimeout(() => {
                console.log(arr[i])
            }, i*100)
        })(i);
    }
}
operateTime()